      SUBROUTINE SETUP
      RETURN
      END
C   HS93
      SUBROUTINE EF(X,FX)
      INCLUDE 'FUCO.INC'
      DOUBLE PRECISION X(NX),FX
      ICF=ICF+1
      FX=X(1)*X(4)*(X(1)+X(2)+X(3))*(.0204D0+.0607D0*X(5)**2)+X(2)*X(3)
     1   *(X(1)+1.57D0*X(2)+X(4))*(.0187D0+.0437D0*X(6)**2)
      RETURN
      END
      SUBROUTINE EGRADF(X,GRADF)
      INCLUDE 'FUCO.INC'
      DOUBLE PRECISION X(NX),GRADF(NX),C1,C2,C3,C4,X1,X2,X3,X4,X5,X6,
     F   T1,T2,CL1,CL2
      SAVE C1,C2,C3,C4
      DATA  C1/0.0204D0/, C2/0.0187D0/, C3/0.0607D0/, C4/0.0437D0/
      ICGF=ICGF+1
      X1=X(1)
      X2=X(2)
      X3=X(3)
      X4=X(4)
      X5=X(5)
      X6=X(6)
      T1=C1+C3*X5*X5
      T2=C2+C4*X6*X6
      CL1=X1+1.57D0*X2+X4
      CL2=CL1+1.57D0*X2
      GRADF(1)=X2*X3*T2+X4*T1*(X1+X1+X2+X3)
      GRADF(2)=CL2*X3*T2+X1*X4*T1
      GRADF(3)=CL1*X2*T2+X1*X4*T1
      GRADF(4)=X1*(X1+X2+X3)*T1 + X2*X3*T2
      GRADF(5)=2.D0*C3*X5*X4*X1*(X1+X2+X3)
      GRADF(6)=2.D0*C4*X6*X2*X3*CL1
      RETURN
      END
      SUBROUTINE EH(I,X,HXI)
      INCLUDE 'FUCO.INC'
      INTEGER I
      DOUBLE PRECISION X(NX),HXI
      CRES(I)=CRES(I)+1
      RETURN
      END
      SUBROUTINE EGRADH(I,X,GRADHI)
      INCLUDE 'FUCO.INC'
      INTEGER I
      DOUBLE PRECISION X(NX),GRADHI(NX)
      CGRES(I)=CGRES(I)+1
      RETURN
      END
      SUBROUTINE EG(I,X,GXI)
      INCLUDE 'FUCO.INC'
      INTEGER I
      DOUBLE PRECISION X(NX),GXI
      IF ( GUNIT(1,I+NH) .EQ. -1 )CRES(I+NH)=CRES(I+NH)+1      
      IF(I .GT. 2)      GOTO 200
      IF(I .EQ. 2)      GOTO 100
      GXI=1.D-3*X(1)*X(2)*X(3)*X(4)*X(5)*X(6)-2.07D0
      RETURN
 100  CONTINUE
      GXI=1.D0-6.2D-4*X(1)*X(4)*X(5)**2*(X(1)+X(2)+X(3))
     1    -5.8D-4*X(2)*X(3)*X(6)**2*(X(1)+1.57D0*X(2)+X(4))
      RETURN
  200 CONTINUE
      GXI=X(I-2)
      RETURN
      END
      SUBROUTINE EGRADG(I,X,GRADGI)
      INCLUDE 'FUCO.INC'
      INTEGER I,J,K,L
      DOUBLE PRECISION X(NX) ,GRADGI(NX),CLL(3),CL1,CL2,CL3,C1,C2,C3,
     F CL4
      SAVE C1,C2,C3
      DATA C1/1.D-3/ ,C2/-6.2D-4/, C3/-5.8D-4/
      IF ( GUNIT(1,I+NH) .EQ. 1 )RETURN
      CGRES(I+NH)=CGRES(I+NH)+1
      IF( I.GT. 2)      GOTO 300
       IF( I.EQ. 2)      GOTO 200
      CL1=X(1)*X(2)
      CL2=X(3)*X(4)
      CL3=X(5)*X(6)
      CLL(1)=CL1*CL2
      CLL(2)=CL1*CL3
      CLL(3)=CL2*CL3
      DO      100      J=1,3
      K=4-J
      L=J+J-1
      GRADGI(L)=X(L+1)*C1*CLL(K)
      GRADGI(L+1)=X(L)*C1*CLL(K)
 100  CONTINUE
      RETURN
 200  CONTINUE
      CL1=X(1)+X(2)+X(3)
      CL2=X(1)+1.57D0*X(2)+X(4)
      CL3=X(4)*X(5)**2
      CL4=X(3)*X(6)**2
      GRADGI(1)=C2*CL3*(X(1)+CL1)+C3*X(2)*CL4
      GRADGI(2)=C2*CL3* X(1)+C3*CL4*(CL2+1.57D0*X(2))
      GRADGI(3)=C2*X(1)*CL3+C3*X(2)*X(6)**2*CL2
      GRADGI(4)=C2*X(1)*X(5)**2*CL1+C3*CL4*X(2)
      GRADGI(5)=2.D0* C2*X(1)*X(4)*X(5)*CL1
      GRADGI(6)=2.D0* C3*X(2)*X(3)*X(6)*CL2
      RETURN
  300 CONTINUE
      DO     400      J=1,6
      GRADGI(J)=0.
  400 CONTINUE
      GRADGI(I-2)=1.D0
      RETURN
      END
      BLOCK DATA
      INCLUDE 'BLOCO.INC'
      INTEGER I,J
      DATA NAME/'HS93'/
      DATA (X(I),I=1,6)
     F    /5.54D0,4.4D0,12.02D0,11.82D0,.702D0,.852D0/
      DATA N/ 6/ , NH/0/ , NG/ 8/
      DATA DEL0/1.00D0/ ,TAU0/0.1D0/ ,TAU/.1D0/
      DATA ((GUNIT(I,J),I=1,3),J=0,8)/-1,0,0,-1,0,0,-1,0,0,
     F           1,1,1,1,2,1,1,3,1,1,4,1,1,5,1,1,6,1/
      END
